<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>844. 比较含退格的字符串</title>
  </head>
  <body>
    <script>
      //     给定 s 和 t 两个字符串，当它们分别被输入到空白的文本编辑器后，如果两者相等，返回 true 。# 代表退格字符。

      // 注意：如果对空文本输入退格字符，文本继续为空。

      //

      // 示例 1：

      // 输入：s = "ab#c", t = "ad#c"
      // 输出：true
      // 解释：s 和 t 都会变成 "ac"。
      // 示例 2：

      // 输入：s = "ab##", t = "c#d#"
      // 输出：true
      // 解释：s 和 t 都会变成 ""。
      // 示例 3：

      // 输入：s = "a#c", t = "b"
      // 输出：false
      // 解释：s 会变成 "c"，但 t 仍然是 "b"。
      //

      // 提示：

      // 1 <= s.length, t.length <= 200
      // s 和 t 只含有小写字母以及字符 '#'

      // 来源：力扣（LeetCode）
      // 链接：https://leetcode.cn/problems/backspace-string-compare
      // 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
      /**
       * @param {string} s
       * @param {string} t
       * @return {boolean}
       */
      var backspaceCompare = function (S, T) {
        let i = S.length - 1,
          j = T.length - 1,
          skipS = 0,
          skipT = 0
        // 大循环
        while (i >= 0 || j >= 0) {
          // S 循环
          while (i >= 0) {
            if (S[i] === '#') {
              skipS++
              i--
            } else if (skipS > 0) {
              skipS--
              i--
            } else break
          }
          // T 循环
          while (j >= 0) {
            if (T[j] === '#') {
              skipT++
              j--
            } else if (skipT > 0) {
              skipT--
              j--
            } else break
          }
          if (S[i] !== T[j]) return false
          i--
          j--
        }
        return true
      }
      console.log(backspaceCompare('a#c', 'b'))
    </script>
  </body>
</html>
